package coba.excel;

import java.util.LinkedList;
import java.util.List;

import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;

public class ValidarCoordinador {

	public static List<Error> run(CoordinadorRow row) {

		List<Error> listError = new LinkedList<Error>();

		if (row.getApellido() == null ||
				row.getApellido().trim().equals(""))
			listError.add(new Error(row.getNumeroLinea(), "Debe escribir un apellido."));

		if (row.getApellido() != null &&
				!row.getApellido().trim().equals("") &&
				row.getApellido().length() > 50)
			listError.add(new Error(row.getNumeroLinea(), "El apellido debe tener menos de 50 caracteres."));

		if (row.getNombre() == null ||
				row.getNombre().trim().equals(""))
			listError.add(new Error(row.getNumeroLinea(), "Debe escribir un nombre."));

		if (row.getNombre() != null &&
				!row.getNombre().trim().equals("") &&
				row.getNombre().length() > 50)
			listError.add(new Error(row.getNumeroLinea(), "El nombre debe tener menos de 50 caracteres."));

		if (row.getGenero() == null ||
				row.getGenero().trim().equals(""))
			listError.add(new Error(row.getNumeroLinea(), "Debe escribir un g&eacute;nero."));

		if (row.getGenero() != null &&
				!row.getGenero().trim().equals("") &&
				row.getGenero().length() > 50)
			listError.add(new Error(row.getNumeroLinea(), "El g&eacute;nero debe tener menos de 50 caracteres."));

		if (row.getGenero() != null &&
				!row.getGenero().trim().equals("") &&
				!row.getGenero().trim().equals("FEMENINO") &&
				!row.getGenero().trim().equals("MASCULINO"))
			listError.add(new Error(row.getNumeroLinea(), "El g&eacute;nero debe ser &quot;Femenino&quot; o &quot;Masculino&quot;."));

		if (row.getDni() == null ||
				row.getDni().trim().equals(""))
			listError.add(new Error(row.getNumeroLinea(), "Debe escribir un DNI."));

		if (row.getDni() != null &&
				!row.getDni().trim().equals("") &&
				row.getDni().length() > 50)
			listError.add(new Error(row.getNumeroLinea(), "El DNI debe tener menos de 50 caracteres."));

		if (row.getTelefono() == null ||
				row.getTelefono().trim().equals(""))
			listError.add(new Error(row.getNumeroLinea(), "Debe escribir un tel&eacute;fono."));

		if (row.getTelefono() != null &&
				!row.getTelefono().trim().equals("") &&
				row.getTelefono().length() > 50)
			listError.add(new Error(row.getNumeroLinea(), "El tel&eacute;fono debe tener menos de 50 caracteres."));

		if (row.getEmail() == null ||
				row.getEmail().trim().equals(""))
			listError.add(new Error(row.getNumeroLinea(), "Debe escribir un e-mail."));

		if (row.getEmail() != null &&
				!row.getEmail().trim().equals("") &&
				row.getEmail().length() > 50)
			listError.add(new Error(row.getNumeroLinea(), "El e-mail debe tener menos de 50 caracteres."));

		if (row.getEmail() != null &&
				!row.getEmail().trim().equals("")) {
			try {
				InternetAddress emailAddr = new InternetAddress(row.getEmail());
				emailAddr.validate();
			} catch (AddressException ex) {
				listError.add(new Error(row.getNumeroLinea(), "Debe escribir un e-mail v&aacute;lido."));
			}
		}

		if (row.getEspecificacionAlimenticia() != null &&
				!row.getEspecificacionAlimenticia().trim().equals("") &&
				row.getEspecificacionAlimenticia().length() > 50)
			listError.add(new Error(row.getNumeroLinea(), "La especificaci&oacute;n alimenticia debe tener menos de 50 caracteres."));

		if (row.getEnfermedades() != null &&
				!row.getEnfermedades().trim().equals("") &&
				!row.getEnfermedades().trim().equals("Alergia") &&
				!row.getEnfermedades().trim().equals("Procesos inflamatorios") &&
				!row.getEnfermedades().trim().equals("Fractura") &&
				!row.getEnfermedades().trim().equals("Esguince") &&
				!row.getEnfermedades().trim().equals("Enfermedades infecto-contagiosas") &&
				!row.getEnfermedades().trim().equals("Operaciones") &&
				!row.getEnfermedades().trim().equals("Otro/a"))
			listError.add(new Error(row.getNumeroLinea(), "La enfermedad especificada no es v&aacute;lida. Elija una de las indicadas o ninguna."));

		if ((row.getObservaciones() == null ||
				row.getObservaciones().trim().equals("")) &&
					(row.getEnfermedades().trim().equals("Alergia") ||
					row.getEnfermedades().trim().equals("Fractura") ||
					row.getEnfermedades().trim().equals("Operaciones") ||
					row.getEnfermedades().trim().equals("Otro/a")))
			listError.add(new Error(row.getNumeroLinea(), "Indicar alergia, fractura, operaciones u \"otro/a\" como enfermedad, requiere escribir alguna observaci&oacute;n al respecto."));

		if (row.getObservaciones() != null &&
				!row.getObservaciones().trim().equals("") &&
				row.getObservaciones().length() > 100)
			listError.add(new Error(row.getNumeroLinea(), "Las observaciones deben tener menos de 100 caracteres."));

		return listError;

	}

}
